Mikhail Sukhov
|
Date: 11/14/2013
Немного про пункт: Quote:События обработки маркет данных коннекторов вызываются из одного потока. За этим пунктом скрывается наша мажорная фича 4.2. Начиная с версии 4.2.0 в StockSharp появился новый уровень - Messages. Данный уровень позволяет работать с внешними торговыми системами, используя их диалектику через общией интерфейс Messages (Сообщения). Отличие от ITrader состоит в том, что ITrader скрывает детали работы с внешней системой, в то время как Messages (через IMessageAdapter) наоборот - позволяет работать с ними. Уровень Messages более приспособлен к HFT роботам, так как он напрямую отдает данные во внешние системы. Он не потоко безопасен, поэтому все блокировки или очереди необходимо делать самому, если будет идти работа с этим уровнем напрямую (как это делает сейчас BaseTrader через MessageProcessor). Так же внутри максимально убраны различного уровня задержки ввиде коллекций или накапливаемых очередей. В MessageAdapter торговая система вызывается из того же потока, что и вызываемый код. Аналогично работает и с IMessageAdapter.NewMessage. На Message был переведен наш эмулятор. Он стал значительно проще и получил вид конечного автомата. Тоесть на вход подаются данные и результатом выполнения идут сразу же какие то сообщения (изменения стакана, сделки и т.д.). Тестировать эмулятор стало значительно проще (для тех, кому захочется работать с эмулятором). Более того, он получил ряд фич, такие как приоритет исполнения заявок, замешивание стакана (наружу выдается не стакан из истории или реального подключения, а именно эмуляционный, со своими заявками). Messages более приспособлены к передаче по сети за счет своей отвязанности от контекста. Поэтому теперь стало возможных сделать физическое разнесение загрузки данных и эмулятора. Например, запустить параллельно сразу на нескольких серверах эмуляцию. При этом сами данные хранятся на сервере истории. Адаптеры так же разделены на 2 типа. Для маркет-данных и для транзакций. Тоесть можно, к примеру, получать данные из одного датафида, а торговать через другой. На месседжи пока переведены следующие коннекторы: Quik, SmartCOM, Plaza (оба режима), Fix, Fusion (Blackwood). В след релизе точно переведены будут Alfa, IB, OEC, Transaq. Остальное чуть позднее. Просьба помочь с тестирование новой версии, так как переделки были значительные.Обратная совместимость со старыми роботами практически полностью поддержана (нокоторые enum перекочевали из BusinessEntities в Messages). Использование BeginRead BeginUpdate у сущностей теперь не нужно, так как поток обновления используется в BaseTrader один.
|
|
|
|
|
transdex
|
Date: 11/14/2013
Михаил Сухов Нет, именно разделение датафида от транзакций - это извращение. Сделали буржуи, потому что у них бизнес разделен. Технологически - это самый что ни на есть обычный косяк в архитектуре. Практически сразу же добавляется геморрой с синхронизацией состояния заявок, получения своих позиций, сделок... Вообще сущий ад с рас синхронизацией данных, и меток времени. И которые решаются уплатой лишних пару тысяч в месяц, чтобы доапгрейдить readonly логин до нормального. Из-за пары то тысяч себе такие приключение? Увольте.
Михаил Сухов Адаптеры так же разделены на 2 типа. Для маркет-данных и для транзакций. Тоесть можно, к примеру, получать данные из одного датафида, а торговать через другой.
Прогресс, однако... [biggrin]
|
|
|
|
|
Mikhail Sukhov
|
Date: 11/16/2013
Тонкая работа![thumbup] Но я своего мнения не поменял. Те брокера, что дают датафид, имеют и новую инфраструктуру. А те, что не дают ДФ, имеют или устаревшее или сами пишут, что в переходном состоянии. Скорее уж решение было в сторону потребности. Против тренда стоять в технологиях накладно. Забыл написать про еще одну причину, почему месседжи возникли. Универсальный клей для разных блоков. Например, есть коннекторы, есть стратегии, есть блок для риск менеджмента, есть блок расчета ПнЛ. Это все разные блоки, и необходимо их склеить одним единым интерфейсом. IMessageAdapter в этом случае подходит как нельзя лучше. Да, это не ООП, но для взаимодействия независимых систем такое решение является стандартом.
|
|
Thanks:
|
|
|
|
|
esper
|
Date: 11/17/2013
Выложили 4.2.1Фичи: - Interactive Brokers TWS API обновлено до версии 9.70.
Баги:
|
|
Thanks:
|
|
|
|
|
alexan3010
|
Date: 11/18/2013
Что то у меня на коннекторе SmartCom вообще ничего не идет после обновления до 4.2. Все подключается, портфели и инструменты получаются, а данные и изменения не идут. Примеры Samples тоже ни один не работает. Какие уточнения прислать?
У меня есть простенькое приложение консольное, написанное на базе соответствующего вашего Sample. В 4.1.19 оно писалось и работает. В 4.2.1 оно затыкается на
_trader.RegisterSecurity(_ri); waitHandle.WaitOne();
то есть событие не завершается. Может быть в связи с изменениями в 4.2.1 подписываться на обновления по инструменту сейчас нужно как то по другому?
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 11/18/2013
alexan3010 Что то у меня на коннекторе SmartCom вообще ничего не идет после обновления до 4.2. Все подключается, портфели и инструменты получаются, а данные и изменения не идут. Примеры Samples тоже ни один не работает. Какие уточнения прислать? Скажите сначала что вы запускаете? Пример под СмартКом называется SampleSmart, а не Samples.
|
|
Thanks:
|
|
|
|
|
alexan3010
|
Date: 11/18/2013
Запускал я все по очереди. Описывал свое приложение, на базе SampleSmart.
Сейчас с нуля набросал простенькое приложение в 4.1.19 которое коннектится, получает портфели и инструменты и начинает выводить в лист-бокс Close свечек. В 4.1.19 все нормально. Потом я выхожу из VS, подменяю библиотеку на 4.2.1, запускаю VS, открываю то приложение которое было написано 5 минут назад под 4.1.19, при компиляции ругается на отсутствие StockSharp.Messages, а также на команду _trader.ApplyWrapper(SmartComVersions.V3); Добавляю ссылку на StockSharp.Messages, комментирую предыдущую команду, где я явно указывал на версию SmartCom, приложение запускается, коннектится, получает портфель и нужные securities и дальше где по идее должна начать выкидывать обновления - ничего не происходит, то есть я так понимаю _trader.RegisterSecurity(_ri) - где то в этом месте не получает обновления по инструменту.
Может быть я что то делаю не так? То есть ошибки то никакой не выкидывает, просто не происходит то, что раньше происходило - поток данных со свечками. Сейчас вернул библиотеку обратно на 4.1.19 - добавил _trader.ApplyWrapper(SmartComVersions.V3); и все работает опять нормально. Вот кусок кода, который не отрабатывает в новой библиотеке:
_trader.RegisterSecurity(_ri); _series = new CandleSeries(typeof(TimeFrameCandle), _ri, _timeFrame); _candleManager = new CandleManager(_trader); //Заводим менеджер свечей _series = new CandleSeries(typeof(TimeFrameCandle), _ri, _timeFrame); _candleManager.Start(_series); _trader.RegisterTrades(_ri); _candleManager.Processing += (s, candle) => { if (candle.State == CandleStates.Finished) this.GuiAsync(() => MyList.Items.Add(candle.CloseTime + " " + candle.ClosePrice)); };
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 11/18/2013
alexan3010 Запускал я все по очереди. Описывал свое приложение, на базе SampleSmart.
Давайте вернемся к стандартному примеру. Если запускать SampleSmart (без модификаций), то что в нем не работает? На каком тикере можно проверить поведение?
|
|
Thanks:
|
|
|
|
|
alexan3010
|
Date: 11/18/2013
Ok. Библиотека 4.2.1 Пример SampleSmart из нее же, без модификаций вообще.
Висит на записи: Дожидаемся появления в программе инструмента Лукойл и портфеля BP....-MS-01
и ничего не происходит. Точками я забил свой номер договора, а так он там правильно высвечивается.
То есть коннектится, получает портфель, успешно получает инструмент, но не получает никаких изменений по нему. У меня все так же. В примере SampleCandles тоже примерно так же - коннектится, появляется инструмент RTS-12.13 пытаемся вывести по нему либо он-лайн либо историю - пустой чарт в обоих случаях. Никаких ошибок при этом не возникает.
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 11/18/2013
alexan3010 Ok. Библиотека 4.2.1 Пример SampleSmart из нее же, без модификаций вообще.
Висит на записи: Дожидаемся появления в программе инструмента Лукойл и портфеля BP....-MS-01
Этот пример не выводит подобную запись. Вы уверены, что запускаете SampleSmart?
|
|
Thanks:
|
|
|
|